package com.adingxiong.ribbon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableEurekaClient
public class RibbonApplication {

    /**  ribbon   1.  负载均衡   多个服务时候 每次调用服务名称不同  但是关掉一个服务的时候 会继续调用挂的服务然后出现报错
     *
     *   解决这个问题的时候 我们需要使用 ribbon的重试机制  当集群服务挂掉一个  请求失败不会继续请求
     *
     * 当修改负载均衡的模式为 轮询的时候  RestTemplate调用的时候 之前的ip地址换成 spring-application 取的名字
     * @return
     */


    @LoadBalanced
    @Bean
    public RestTemplate getRestTemplate(){
        SimpleClientHttpRequestFactory  simple = new SimpleClientHttpRequestFactory();
        //设置重试的超时时间  和设置重新连接的时间
        simple.setReadTimeout(1000);
        simple.setConnectTimeout(1000);
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(RibbonApplication.class, args);
    }

}
